#!/usr/bin/env python3
# -*- coding: utf-8 -*-
' main entry '
__author__ = 'pingwu you'

def help_demo():
    import hashlib
    md5=hashlib.md5()
    md5.update("中国".encode("utf-8"))
    md5.update("人民".encode("utf-8"))
    print("md5demo--------------")
    #生成结果是固定的128 bit字节，通常用一个32位的16进制字符串表示
    print(md5.hexdigest())

    sha1 = hashlib.sha1()
    sha1.update('how to use sha1 in '.encode('utf-8'))
    sha1.update('python hashlib?'.encode('utf-8'))
    print("sha1demo--------------")
    #SHA1的结果是160 bit字节，通常用一个40位的16进制字符串表示。
    print(sha1.hexdigest())

    password="123456"
    salt=username="admin"
    src=password+salt
    sha1 = hashlib.sha1()
    sha1.update(src.encode('utf-8'))
    print("sha2demo  加盐 防止彩虹表倒推 密码等场景 数据库丢失后的场景--------------")
    #SHA1的结果是160 bit字节，通常用一个40位的16进制字符串表示。
    print(sha1.hexdigest())

    #更为标准的加盐加key生成哈希算法 hmac
    #利用一个key对message计算“杂凑”后的hash，使用hmac算法比标准hash算法更安全
    import hmac
    msg="消息内容".encode("utf-8")
    key="a3b*b".encode("utf-8")
    hash=hmac.new(key,msg,digestmod="md5")
    print("hmac  动态混入key进行hash 防止彩虹表倒推 密码等场景 数据库丢失后的场景--------------")
    old=hash.hexdigest()
    print(old)
    hash=hmac.new(key,msg,digestmod="md5")
    new=hash.hexdigest()
    print(old==new)